<?php

namespace Lib\Dao;
use Lib\Dao\FcfDao;
use Lib\Dao\LogsDao;
use Illuminate\Support\Facades\DB;

define('CAMPOS_TABLA_USUARIOS','id,nombre,usuario,email,password,created_at,updated_at,remember_token,menu_defecto,menu_sup,left_menu,color_header,color_menu,rol,activo');
define('CAMPOS_VISTA_MENU_USUARIO','id,id_gestor,nombre,permiso,enlace,parent,icono,gestor,orden');

class UsuariosDao {
	
	var $tabla_usuarios = 'usuarios';
	
	function getTodosUsuarios(){
		$queryString = "Select ".CAMPOS_TABLA_USUARIOS." FROM ".$this->tabla_usuarios;
		return FcfDao::select($queryString);
	}
	
	function getUsuarioPorId($id){
		$queryString = "Select ".CAMPOS_TABLA_USUARIOS." FROM ".$this->tabla_usuarios." WHERE id=".$id." LIMIT 0,1";
		$returnValue = FcfDao::select($queryString);
		return $returnValue[0];
	}
	
	function getCampoTablaPorUsuario($id_usuario,$campo){
		$queryString = "Select ".$campo." FROM ".$this->tabla_usuarios." WHERE id=".$id_usuario." LIMIT 0,1";
		$result = FcfDao::select($queryString);
		return $result[0]->$campo;
	}
	
	/*
	function getMenusPorIdUsuarioYPermiso($id,$permiso){
		$queryString = "SELECT ".CAMPOS_VISTA_MENU_USUARIO." FROM getmenuusuario WHERE id_gestor=$id AND permiso>=$permiso ORDER BY orden asc";
		return FcfDao::select($queryString);
	}*/
	
	
	function getMenusPorIdUsuarioYPermiso($id,$permiso){
		
		$queryString ="SELECT
				  t1.id        AS id,
				  t1.id_gestor AS id_gestor,
				  t1.nombre    AS nombre,
				  t1.permiso   AS permiso,
				  t1.enlace    AS enlace,
				  t1.parent    AS parent,
				  t1.icono     AS icono,
				  t1.orden     AS orden,
				  t2.nombre    AS gestor
				  FROM menus t1
				  LEFT JOIN gestores t2
				  ON t1.id_gestor = t2.id
				  WHERE t1.id_gestor=$id 
				  AND t1.permiso>=$permiso
				  ORDER BY orden asc ";
		return FcfDao::select($queryString);
	}
	

	function updateNombreUsuario($id,$nombre){
		$queryString = "UPDATE ".$this->tabla_usuarios." SET nombre = '".$nombre."' WHERE id = '".$id."';";
		return FcfDao::update($queryString);
	}
	
	function updatePasswordUsuario($id,$contraseña){
		$queryString = "UPDATE ".$this->tabla_usuarios." SET password = '".$contraseña."' WHERE id = '".$id."';";
		return FcfDao::update($queryString);
	}
	
	function updateEmailUsuario($id,$email){
		$queryString = "UPDATE ".$this->tabla_usuarios." SET email = '".$email."' WHERE id = '".$id."';";
		return FcfDao::update($queryString);
	}
	
	function updateCambioMenu($id_usuario,$menu_lateral,$menu_sup){
		$queryString = "UPDATE ".$this->tabla_usuarios." SET menu_defecto = '".$menu_lateral."',menu_sup = '".$menu_sup."' WHERE id = ".$id_usuario;
		return FcfDao::update($queryString);
	}
	
	function crearUsuario($aux){
		$queryString = "INSERT INTO usuarios (".CAMPOS_TABLA_USUARIOS.")
						VALUES (null,
						        '".$aux['nombre']."',
						        '".$aux['usuario']."',
						        '".$aux['email']."',
						        '".$aux['password']."',
						        CURRENT_TIMESTAMP,
						        null,
						        null,
						        '".$aux['menu_defecto']."',
					        	'".$aux['menu_sup']."',
					        	null,
					        	null,		
					        	null,				
					        	'".$aux['rol']."',
						        ".$aux['activo'].");";
		return FcfDao::insert($queryString);
	}
	
	function updateUsuario($aux){
		$queryString = "UPDATE usuarios
						SET 
						  nombre = '".$aux['nombre']."',
						  usuario = '".$aux['usuario']."',
						  email = '".$aux['email']."',
						  password = '".$aux['password']."',
						  menu_defecto = '".$aux['menu_defecto']."',
						  menu_sup = '".$aux['menu_sup']."',
						  rol = '".$aux['rol']."'
						WHERE id = ".$aux['id'];
		//exit($queryString);
		return FcfDao::update($queryString);
	}
	
	function cambio_estado_usuario($id,$estado){
		$queryString = 'UPDATE usuarios SET activo = '.$estado.' WHERE id = '.$id;
		LogsDao::nuevo(__FUNCTION__,"Cambio estado usuario->".$id."estado->".$estado);
		return FcfDao::update($queryString);
	}
	
	function eliminar_usuario($id){
		$queryString = 'DELETE FROM usuarios WHERE id = '.$id;
		return FcfDao::insert($queryString);
	}
	
	function comprobar_disponibilidad($usuario){
		$queryString = "SELECT EXISTS ( SELECT usuario FROM usuarios  WHERE usuario='".$usuario."' ) AS result";
		$returnValue = FcfDao::select($queryString);
		return $returnValue[0]->result;
	}
	
	function getUsuariosUltimaConexion(){
		$queryString = "SELECT ".CAMPOS_TABLA_USUARIOS." FROM usuarios ORDER BY updated_at DESC";
		return FcfDao::select($queryString);
	}
	
	function updateColor($campo,$color,$id){
		$queryString = "UPDATE usuarios SET ".$campo." = '".$color."' WHERE id = ".$id;
		return FcfDao::insert($queryString);
	}

	function getPermisoUsuario($id){
		$queryString = "SELECT tipo FROM permisos_usuario WHERE id=".$id." LIMIT 0,1";
		return FcfDao::selectRow($queryString);
	}
	
	function updateLeftMenu($id,$valor){
		$queryString = "UPDATE usuarios SET left_menu = '".$valor."' WHERE id = ".$id;
		return FcfDao::insert($queryString);
	}
	
	function getIdUsuarioPorUsuarioEmail($valor){
		$queryString = "SELECT id,email FROM usuarios WHERE usuario = '$valor' OR email = '$valor' LIMIT 0,1";
		return FcfDao::selectRow($queryString);
	}
	
	
}

?>